package com.lzh.financial.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.lzh.financial.constant.ResponseCode;
import com.lzh.financial.params.PageParam;
import org.apache.commons.lang.StringUtils;


public class RebornJson {

    /**
     * 将数据转换为json对象
     * @param data
     * @return
     */
    private static Object convertToJson(Object data){
        if (data instanceof JSONObject||data instanceof JSONArray){
            return data;
        }
        return JSON.toJSON(data);
    }
    /**
     * 成功返回
     * @param msg
     * @param data
     * @return
     */
    public static JSONObject success(String msg,Object data){
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("status","OK");
        jsonObject.put("code", ResponseCode.SUCCESS_CODE.getCode());
        jsonObject.put("status_desc", StringUtils.defaultString(msg,"操作成功"));
        if (data!=null){
            jsonObject.put("data",convertToJson(data));
        }
        return jsonObject;
    }

    /**
     * 成功返回
     * @param msg
     * @return
     */
    public static JSONObject success(String msg){
        return success(msg,null);
    }

    /**
     * 成功返回列表分页信息
     * @param msg
     * @param data
     * @param page
     * @return
     */
    public static JSONObject successList(String msg, Object data, PageParam page){
        JSONObject jsonObject=success(msg,data);
        if (page!=null){
            jsonObject.put("pageparam", convertToJson(page));
        }
        return jsonObject;
    }

    /**
     * 通用返回
     * @param code
     * @param msg
     * @param data
     * @return
     */
    public static JSONObject common(int code,String msg,Object data){
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("status","OK");
        jsonObject.put("code", code);
        jsonObject.put("status_desc",StringUtils.defaultString(msg,"操作OK"));
        if (data!=null){
            jsonObject.put("data",convertToJson(data));
        }
        return jsonObject;
    }

    /**
     * 失败返回
     * @param code
     * @param msg

     * @param data
     * @return
     */
    public static JSONObject fail(int code,String msg,Object data){
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("status","FAIL");
        jsonObject.put("code", code);
        jsonObject.put("status_desc",StringUtils.defaultString(msg,"操作失败"));
        if (data!=null){
            jsonObject.put("data",convertToJson(data));
        }
        return jsonObject;
    }

    /**
     * 失败返回
     * @param msg
     * @return
     */
    public static JSONObject fail(int code,String msg){
        return fail(code,msg,null);
    }

    /**
     * 失败返回
     * @param msg
     * @return
     */
    public static JSONObject fail(String msg,Object data){
        return fail(ResponseCode.FAIL_CODE.getCode(),msg,data);
    }

    /**
     * 失败返回
     * @param msg
     * @return
     */
    public static JSONObject fail(String msg){
        return fail(msg,null);
    }

}
